// 异步 可读性 代码的编写顺序和执行顺序一样就好了
// 代码能暂定一下 async await 
// 生成器函数
function *foo(x) {  // generator * yield  promise
    let y = 2*(yield(x+1))
    let z = yield(y/3)
    return (x+y+z)
}
let it = foo(5)  // 只返回一个迭代器 函数不执行 
console.log(it)
console.log(it.next(12)) // 迭代一次 手动 24
console.log(it.next(13))